package edu.gtcfla.km.repositories;

import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

import org.springframework.data.repository.Repository;

import edu.gtcfla.km.Knowledge;
import edu.gtcfla.km.UploadFile;

/**
 * 
 * @author Bill Vison
 *
 * @param <T>
 * @param <ID>
 */
public interface UploadFileRepo<T extends UploadFile, ID extends Serializable> extends Repository<T, ID> {

	/**
	 * 保存当前系统角色
	 * @param entity
	 * @return
	 */
	void save(T entity);
	
	/**
	 * 更新数据对像
	 * @param entity
	 */
	void update(T entity);

	/**
	 * 查询一条数据进行保存
	 * @param entity
	 * @return
	 */
	T findOne(ID primaryKey);

	/**
	 * 查询显示所有操作
	 * @param entity
	 * @return
	 */
	Iterable<T> findAll();
	
	
	Iterable<T> findAllByKnowledge(String docId);
	
	Iterable<T> findAllByKnowledgeAndFileFormat(String docId , String fileFormat);
	
	/**
	 * find all doc by category id 
	 * @param cateId
	 * @param type
	 * @return
	 */
	Iterable<T> findAllByCate(String cateId , String type);

	
	Iterable<T> findAllByCateAndFileFormat(	Set<String> categoryIds, String currentUserId, String userGroupId, String fileFormat);	
	
	/**
	 * 计算当前实体总数
	 * @return
	 */
	Long count();
	
	
	void bindingAttacthmentToDoc(UploadFile uploadFile , Knowledge km);
	
	
	Map<String, T> findAllMapByIds(Collection<String> ids);

	void delete(T entity);

}
